The present invention relates generally to methods and apparatus for scheduling I/O requests and specifically to a system for scheduling I/O requests from workstations to one or more particular storage objects.
A large number of distributed network environments typically comprise a number of client workstations networked to one or more centralized storage locations, such as, file servers or disk array subsystems. File servers typically comprise PC or RISC-processor workstations equipped with high storage capacity disk drives. Similarly, disk array subsystems typically comprise one or more disk arrays, for example, RAID arrays, and one or more array controllers attached thereto. The client workstations may be connected to the file servers and/or disk array controllers either through an I/O interconnect, such as SCSI bus, Fibre Channel or other similar I/O connection or the workstation may be connected through a network environment, such as Ethernet, Token Ring, FDDI/CDDI or the like.
It is not unusual in large networks to have a large number of users/clients accessing only a few storage locations in one or more storage objects. During busy times on the network, I/O requests to the various storage locations can become backed-up, causing undesirable response delays for many of the users.
In many business environments, certain users may be performing tasks which require quicker response times than tasks initiated by other users, or it may be desirable for certain users to have a priority higher than other users. In addition, certain data types requiring higher access priorities (e.g., a virtual memory swap volume) may be dedicated to specific disk drives or disk volumes, thus requiring all I/O requests directed to those specific volumes to be processed first. Unfortunately, however, the current disk storage interfaces (i.e., file server processors and/or array controllers) do not provide means for the global scheduling of I/O requests to one or more file servers or disk drive arrays, and therefore only can process I/O requests on a first come, first served basis. In addition, the disk storage interfaces currently known in the art do not have means for resolving contention issues between users, so if one user submits a plurality of I/O requests at one time, requests from other users can become blocked behind the I/O requests of that one user. Thus, higher priority I/O requests can be starved of resources and undesirably delayed.